package com.jrx.anytxn.param.service.account;

import com.jrx.anytxn.i18n.response.TxnPage;
import com.jrx.anytxn.common.exception.TxnException;
import com.jrx.anytxn.param.dto.account.AccountingCheckConfigReq;
import com.jrx.anytxn.param.dto.account.AccountingCheckConfigRes;
import com.jrx.anytxn.param.dto.account.SubjectAccountConfigReq;
import com.jrx.anytxn.param.dto.account.SubjectAccountConfigRes;
import com.jrx.anytxn.param.entity.GaAccountingCheckConfig;
import com.jrx.anytxn.param.entity.GaSubjectAccountConfig;

/**
 * 总分核对配置service
 *
 * @author xiaoyu.jing
 * date 2019/12/24 0024
 * @version V1.0
 **/
public interface IAccountingCheckConfigService {

    /**
     * 分页查询总分核对配置表
     *
     * @param pageNum  页码
     * @param pageSize 页大小
     * @param tenantId 租户ID
     * @return com.jrx.anytxn.common.data.TxnPage<com.jrx.anytxn.param.dto.account.SubjectAccountConfigRes>
     * @author xiaoyu.jing
     * date: 2019/12/24 0024 下午 22:08
     */
    TxnPage<AccountingCheckConfigRes> getAllPageByTenId(Integer pageNum, Integer pageSize, String tenantId) throws TxnException;

    /**
     * 根据租户ID，科目ID，产品ID查询总分核对配置表信息
     *
     * @param tenantId  租户ID
     * @param productId 产品ID
     * @return com.jrx.anytxn.param.dto.account.SubjectAccountConfigRes
     * @author xiaoyu.jing
     * date: 2019/12/24 0024 下午 22:09
     */
    AccountingCheckConfigRes getByTenIdIdAndProductId(String tenantId, String productId) throws TxnException;


    GaAccountingCheckConfig findByProductIdAndTenantId(String tenantId, String productId);

    /**
     * 增加总分核对配置表信息
     *
     * @param accountingCheckConfigReq 总分核对配置表请求
     * @return com.jrx.anytxn.param.dto.account.SubjectAccountConfigRes
     * @author xiaoyu.jing
     * date: 2019/12/24 0024 下午 22:09
     */
    AccountingCheckConfigRes addAccountingCheckConfig(AccountingCheckConfigReq accountingCheckConfigReq) throws TxnException;

    /**
     * 修改总分核对配置表信息
     *
     * @param accountingCheckConfigReq 总分核对配置表请求
     * @return com.jrx.anytxn.param.dto.account.SubjectAccountConfigRes
     * @author xiaoyu.jing
     * date: 2019/12/24 0024 下午 22:09
     */
    AccountingCheckConfigRes modifyAccountingCheckConfig(AccountingCheckConfigReq accountingCheckConfigReq);

    /**
     * 根据租户ID，产品ID，科目ID删除总分核对配置表信息
     *
     * @param tenantId  租户ID
     * @param productId 产品ID
     * @return java.lang.Boolean
     * @author xiaoyu.jing
     * date: 2019/12/24 0024 下午 22:09
     */
    Boolean removeByProIdAndTenId(String tenantId, String productId) throws TxnException;
}
